﻿/**********************************************************************
 * @file   FITKLoadConstraintSEABeam.h
 * @brief  载荷的SEA梁约束数据类声明
 * @author liuzhonghua (liuzhonghuaszch@163.com)
 * @date   2024-12-05
 *********************************************************************/

#ifndef _FITK_LOAD_CONSTRAINT_SEABEAM_H_
#define _FITK_LOAD_CONSTRAINT_SEABEAM_H_

#include "FITKAcousticsPhysicsAPI.h"
#include "FITKLoadAbsConstraint.h"

namespace Acoustics
{
    class FITKAcousticsAbstractSpectra;
    /**
     * @brief  载荷的SEA梁约束数据类
     * @author liuzhonghua (liuzhonghuaszch@163.com)
     * @date   2024-12-05
     */
    class  FITKAcousticsPhysicsAPI FITKLoadConstraintSEABeam :
        public FITKLoadAbsConstraint
    {
        FITKCLASS(Acoustics, FITKLoadConstraintSEABeam);
        Q_OBJECT;
    public:
        /**
         * @brief    Create the FITKLoadConstraintSEABeam object
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        explicit FITKLoadConstraintSEABeam();
        /**
         * @brief    Destroy the FITKLoadConstraintSEABeam object
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        virtual ~FITKLoadConstraintSEABeam();
        /**
         * @brief    Get the Acoustics Load Type object
         * @return   AcousticsLoadType
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        virtual AcousticsLoadType getAcousticsLoadType() override;
        /**
         * @brief    拷贝数据
         * @param[i] obj
         * @return   bool
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        virtual bool copy(FITKAbstractDataObject* obj) override;
        /**
         * @brief    获取弯曲波X频谱ID
         * @return   int     弯曲波X频谱ID
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        int getFlexureXSpectraID();
        /**
         * @brief    获取弯曲波X频谱
         * @return   FITKAcousticsAbstractSpectra *    获取弯曲波X频谱
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        FITKAcousticsAbstractSpectra* getFlexureXSpectra();
        /**
         * @brief    设置弯曲波X频谱ID
         * @param[i] id       弯曲波X频谱ID
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        void setFlexureXSpectraID(int id);
        /**
         * @brief    获取弯曲波Y频谱ID
         * @return   int     弯曲波Y频谱ID
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        int getFlexureYSpectraID();
        /**
         * @brief    获取弯曲波Y频谱
         * @return   FITKAcousticsAbstractSpectra *    获取弯曲波Y频谱
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        FITKAcousticsAbstractSpectra* getFlexureYSpectra();
        /**
         * @brief    设置弯曲波Y频谱ID
         * @param[i] id       弯曲波Y频谱ID
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        void setFlexureYSpectraID(int id);
        /**
         * @brief    获取拉伸波Z频谱ID
         * @return   int     拉伸波Z频谱ID
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        int getExtensionZSpectraID();
        /**
         * @brief    获取拉伸波Z频谱
         * @return   FITKAcousticsAbstractSpectra *    获取拉伸波Z频谱
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        FITKAcousticsAbstractSpectra* getExtensionZSpectra();
        /**
         * @brief    设置伸波Z频谱ID
         * @param[i] id       伸波Z频谱ID
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        void setExtensionZSpectraID(int id);
        /**
         * @brief    获取扭转波ZZ频谱ID
         * @return   int     扭转波ZZ频谱ID
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        int getTorsionZZSpectraID();
        /**
         * @brief    获取扭转波ZZ频谱
         * @return   FITKAcousticsAbstractSpectra *    获取扭转波ZZ频谱
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        FITKAcousticsAbstractSpectra* getTorsionZZSpectra();
        /**
         * @brief    设置扭转波ZZ频谱ID
         * @param[i] id       扭转波ZZ频谱ID
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-12-05
         */
        void setTorsionZZSpectraID(int id);

    private:
        /**
         * @brief  弯曲波X频谱ID
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-12-05
         */
        int _flexureXSpectraID = -1;
        /**
         * @brief  弯曲波Y频谱ID
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-12-05
         */
        int _flexureYSpectraID = -1;
        /**
         * @brief  拉伸波Z频谱ID
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-12-05
         */
        int _extensionZSpectraID = -1;
        /**
         * @brief  扭转波ZZ频谱ID
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-12-05
         */
        int _torsionZZSpectraID = -1;
    };
}


#endif // _FITK_LOAD_ABSTRACT_CONSTRAINT_H_